﻿package com.eitb.programas.olentzero09{
	import flash.events.*;
	import flash.utils.Timer;
	import flash.events.TimerEvent;
	import flash.display.*;

	import com.eitb.util.*;
	import com.eitb.util.logging.*;
	import com.eitb.literales.*;
	import com.eitb.programas.olentzero09.objetos.*;
	import com.eitb.programas.olentzero09.events.*;



	public class ModeloObjetos implements IControladorObjetos {
		private var vJuego:IVistaJuego;
		private var coefDificultad:int;
		private var coefDificultadGozila:int;
		private var tDificultad:Timer;
		private var tLanzar:Timer;
		private var tOvni:Timer;

		private var limites:Object;

		public function ModeloObjetos():void {
			this.coefDificultad=30;
			this.coefDificultadGozila=120;
		}

		// INIT COMPONENTES
		public function initVistaJuego(vJuego:IVistaJuego):void {
			this.vJuego=vJuego;
		}
		public function initLimites(limites:Object):void {
			this.limites=limites;
		}
		// INIT COMPONENTES

		// INIT PARAMETROS
		// INIT PARAMETROS

		// IControlador
		public function reajustarDificultad(evt:TimerEvent):void {
			this.coefDificultad--;
			this.coefDificultadGozila--;
		}
		public function lanzarObjeto(evt:TimerEvent):void {
			if (Math.random()*10<1) {
				this.lanzarRegalo();
			}
			if (Math.random()*100<1) {
				this.lanzarPalote();
			}
			if (Math.random()*250<1) {
				this.lanzarPajaro();
			}
			if (Math.random()*this.coefDificultad<1) {
				this.lanzarBomba();
			}
			if (Math.random()*(this.coefDificultadGozila)<1) {
				this.lanzarGozilla();
			}
		}
		public function finalize():void {
			this.tDificultad.stop();
			this.tLanzar.stop();
			this.tLanzar.removeEventListener(TimerEvent.TIMER,this.lanzarObjeto);
			this.tDificultad.removeEventListener(TimerEvent.TIMER,this.reajustarDificultad);

		}
		public function stopOvnis():void {
			this.tOvni.stop();
		}
		public function startOvnis():void {
			this.tOvni.start();
		}
		// IControlador
		private function lanzarRegalo():void {
			var regalo:Regalo = new Regalo();
			this.vJuego.addChild(regalo);
			regalo.initLimites(this.limites);
			regalo.init();
		}
		private function lanzarPalote():void {
			var regalo:Palote = new Palote();
			this.vJuego.addChild(regalo);
			regalo.initLimites(this.limites);
			regalo.init();
		}
		private function lanzarBomba():void {
			var bomba:Bomba = new Bomba();
			this.vJuego.addChild(bomba);
			bomba.initLimites(this.limites);
			bomba.init();
		}
		private function lanzarOvniVacio(evt:TimerEvent):void {
			var ovnivacio:OvniVacio = new OvniVacio();
			this.vJuego.addChild(ovnivacio);
			ovnivacio.initLimites(this.limites);
			ovnivacio.init();

		}
		private function lanzarPajaro():void {
			var pajaro:Pajaro = new Pajaro();
			this.vJuego.addChild(pajaro);
			pajaro.initLimites(this.limites);
			pajaro.init();
		}
		private function lanzarGozilla():void {
			var gozilla:Gozilla = new Gozilla();
			this.vJuego.addChild(gozilla);
			gozilla.initLimites(this.limites);
			gozilla.init();
		}

		public function start():void {
			this.tLanzar=new Timer(100);
			this.tLanzar.addEventListener(TimerEvent.TIMER,this.lanzarObjeto);
			this.tLanzar.start();

			this.tDificultad=new Timer(5000);
			this.tDificultad.addEventListener(TimerEvent.TIMER,this.reajustarDificultad);
			this.tDificultad.start();

			this.tOvni=new Timer(30000);
			this.tOvni.addEventListener(TimerEvent.TIMER,this.lanzarOvniVacio);
			this.tOvni.start();
		}
	}
}